/**
 * 
 */
package org.stars.daostars.starterkit;

import org.stars.daostars.DaoConfigurator;
import org.stars.database.DatabaseConfigurator;
import org.stars.config.AppSettings;
import org.stars.util.FileUtility;


/**
 * @author Francesco Benincasa (908099)
 * 
 */
public class DaoStarterKitConfigurator {

	protected static DaoStarterKitConfigurator instance;
	
	protected DaoStarterKitConfigurator() {
		
	}
	
	public static DaoStarterKitConfigurator getInstance() {
		if (instance==null) {
			instance=new DaoStarterKitConfigurator();
		}
		
		return instance;
	}
	


	/**
	 * Carica tutte le configurazioni relative a log4j, ai database e ai dao.
	 * Questo metodo funziona sia per la modalità test, sia per
	 * l'esecuzione di un'applicazione web.
	 * 
	 * @param isWebApplication
	 *            se <code>true</code> indica di lavorare in modalit� web.
	 * @return
	 * 		<code>true</code> in caso tutto vada bene 
	 */
	public boolean loadAllConfiguration(boolean isWebApplication) {
		boolean bRet = false;
		try {			
			String sPath; // Path fisico della base del progetto
			sPath = FileUtility.getBasePath(); // path di base
									
			bRet = true;

			try {							
				if (!isWebApplication) {
					sPath+="/src/test/resources";					
				} else {
					sPath+="/src/main/webapp";														
				}
				
				sPath=FileUtility.adjustPath(sPath);
				AppSettings.getInstance().putParameter("PATH", sPath); // impostiamo il base path
								
				DatabaseConfigurator.getInstance().loadConfigurationFromFile(sPath);
				DaoConfigurator.getInstance().loadConfigurationFromFile(sPath);
			} catch (Exception e) {
				bRet = false;
			}

		} catch (Exception e) {
			bRet = false;
		}

		return bRet;
	}
	
	public boolean loadAllConfiguration(String sBasePath) {
		boolean bRet = false;
		try {			
			String sPath; // Path fisico della base del progetto
			sPath = sBasePath; // path di base
									
			bRet = true;

			try {															
				AppSettings.getInstance().putParameter("PATH", sPath); // impostiamo il base path
				
				DatabaseConfigurator.getInstance().loadConfigurationFromFile(sPath);
				DaoConfigurator.getInstance().loadConfigurationFromFile(sPath);
			} catch (Exception e) {
				bRet = false;
			}

		} catch (Exception e) {
			bRet = false;
		}

		return bRet;
	}
}
